#!/bin/bash
# Copyright (C) 2015-2018 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

FAIL=0

if [ $# -lt 2 ]
then
    echo "Please pass a operation and communication mode to this script."
    echo "For example: $0 CLIENT UDP"
    echo "Valid operation modes include [SERVICE, CLIENT]"
    echo "Valid communication modes include [UDP, TCP]"
    exit 1
fi

OPERATIONMODE=$1
COMMUNICATIONMODE=$2

# Add second IP address to interface
ip addr add @TEST_IP_SLAVE_SECOND@/32 dev eth0

if [ "$OPERATIONMODE" = "CLIENT" ]; then
    SLAVE_APPLICATION=second_address_test_client
    export VSOMEIP_CONFIGURATION=second_address_test_slave_client.json

elif [ "$OPERATIONMODE" = "SERVICE" ]; then
    SLAVE_APPLICATION=second_address_test_service

    if [ "$COMMUNICATIONMODE" = "TCP" ]; then
        export VSOMEIP_CONFIGURATION=second_address_test_slave_service_tcp.json
    elif [ "$COMMUNICATIONMODE" = "UDP" ]; then
        export VSOMEIP_CONFIGURATION=second_address_test_slave_service_udp.json
    fi
fi

rm -f /tmp/vsomeip*

../../../examples/routingmanagerd/routingmanagerd &
PID_VSOMEIPD=$!

./$SLAVE_APPLICATION $COMMUNICATIONMODE &
PID_SLAVE=$!

# Wait until all slaves are finished
for job in $PID_SLAVE
do
    # Fail gets incremented if a client exits with a non-zero exit code
    echo "waiting for $job"
    wait $job || FAIL=$(($FAIL+1))
done

# kill the services
kill $PID_VSOMEIPD
sleep 1

# Delete second IP address
ip addr del @TEST_IP_SLAVE_SECOND@/32 dev eth0

# Check if everything went well
exit $FAIL
